#ifndef _H_MAP_DATA_H_
#define _H_MAP_DATA_H_

#include <vector>
#include <map>
namespace cadmus {
namespace map {
class Shape
{
    int id;
};
/**
 * @brief 2D的点
 *
 */
class Point2D : Shape
{
    float x;
    float y;
};
/**
 * @brief 有方向的点
 *
 */
class Pose2D : Point2D
{
    float theta;
};
/**
 * @brief 多段线
 *
 */
class Polyline : Shape
{
    std::vector<Point2D> dots;
};
/**
 * @brief 圆
 *
 */
class Circle : Shape
{
    Point2D origin;
    float   r;
};
/**
 * @brief 多边形
 *
 */
class Polygon : Shape
{
    std::vector<Point2D> dots;
};
/**
 * @brief 有方向的多边形
 *
 */
class DirPolygon : Polygon
{
    float direction;
};

/**
 * @brief 单张地图上的标记
 *
 */
class MapMark
{
    int                id;
    std::string        type;
    std::string        name;
    std::vector<Shape> shapes;
};

class Action
{
};
class EvtMapMark : MapMark
{
    std::multimap<int, Action> actions;
};
class ResourceMapMark : MapMark
{
    int resourceId;
};

class MapLayer
{
    std::string          id;
    std::string          type;
    std::vector<MapMark> marks;
};
/**
 * @brief 地图数据
 *
 */
class MapData
{
    std::string           id;
    std::string           name;
    std::string           createTime;
    std::vector<MapLayer> layers;
    // map grid
    // map grid info
};

} // namespace map
} // namespace cadmus

#endif // _H_MAP_DATA_H_